package SBD.Servicios;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

/**
* @class Conexion
* @author Mauricio Alvarez
* @date 12-Diciembre-2010
* @brief Representa  la  conexión  universal  a  cualquier  motor  de base de datos.
*/
public class Conexion {

    public Connection conexion = null;
    public Statement un_st = null;
    public DatabaseMetaData dbmd;
    public String s_conexion = null;
    public ResultSet resultado = null;
    public String un_sql = null;

    protected String jdbc;
    protected String driver;
    protected String host;
    protected String database;
    protected String username;
    protected String password;

    /**
     * @brief Constructor que setea los parametros del archivo DatosConexionBD.
     * @return No presenta retorno
     * Inicia la función initdb() que genera la conexión con la base de datos.
    */
    public Conexion() throws java.lang.ClassNotFoundException,
                             java.lang.InstantiationException,
                             java.lang.IllegalAccessException,
                             java.sql.SQLException,
                             IOException
    {
        Properties propiedades = new Properties();
        propiedades.load(new FileInputStream("src/SBD/propiedades/DatosConexionBD.properties"));
        jdbc = propiedades.getProperty("jdbc");
        driver = propiedades.getProperty("driver");
        host = propiedades.getProperty("databasehost");
        database = propiedades.getProperty("database");
        username = propiedades.getProperty("username");
        password = propiedades.getProperty("password");

        initdb();

    }

    /**
     * @brief Genera la solicitud de conexion a la base de datos de forma generica.
     * @return No presenta retorno  
    */
    public void initdb() throws java.lang.ClassNotFoundException,
                                java.lang.InstantiationException,
                                java.lang.IllegalAccessException,
                                java.sql.SQLException
    {
        s_conexion = jdbc + host + "/" + database;
        Class.forName(driver).newInstance();
        conexion = DriverManager.getConnection(s_conexion, username, password);
        dbmd = conexion.getMetaData();
        un_st = conexion.createStatement();
    }

}//FIN Conexion